﻿/*
 * Created by SharpDevelop.
 * User: CeCi
 * Date: 29/03/2014
 * Time: 06:41 p.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Data;

namespace Gestión_UTN.blimpl
{
	/// <summary>
	/// Description of provinciablimpl.
	/// </summary>
	public class provinciablimpl:Gestión_UTN.bl.provinciabl
	{
		private static Gestión_UTN.da.provinciada createProvincia = Gestión_UTN.factories.dafactory.createProvincia();
		private static Gestión_UTN.da.paisda createPais = Gestión_UTN.factories.dafactory.createPais();
		
		public provinciablimpl()
		{
		}
		
		public bool SaveProvincia(Gestión_UTN.bo.provinciabo provincia)
		{
			bool ingresada = false;
			
			try 
			{
				Gestión_UTN.Entities.Pais pai = (null != provincia) ? createPais.FindPaisByName(provincia.Pais): null;
					
				ingresada = (null != pai) ? createProvincia.SaveProvincia(provincia.Nombre,pai.Pai_id): false;
			}
			catch (Exception) {
				
				ingresada = false;
			}
			
			return ingresada;
		}
		
		public bool DeleteProvincia(string nombre)
		{
			bool eliminada =false;
			
			try 
			{
				eliminada = (!nombre.Equals("")) ? createProvincia.DeleteProvincia(nombre) : false;
			} 
			catch (Exception) {
				
				eliminada = false;
			}
			
			return eliminada;
		}
		
		public bool ModifyProvincia(string nombre_anterior, Gestión_UTN.bo.provinciabo provincia)
		{
			bool modificada = false;
			
			try 
			{
				Gestión_UTN.Entities.Pais pais = (!nombre_anterior.Equals("") && null != provincia) ?
					createPais.FindPaisByName(provincia.Pais) : null;
				
				modificada = (null != pais) ? 
					createProvincia.ModifyProvincia(nombre_anterior,provincia.Nombre,0) : false;
			} 
			catch (Exception) {
				
				modificada = false;
			}
			
			return modificada;
		}
		
		public System.Data.DataTable FindAllProvincias()
		{
			DataTable tablaProvincias = null;
			
			try 
			{
				tablaProvincias = createProvincia.FindAllProvincias();
				
			} catch (Exception) {
				
				tablaProvincias = null;
			}
			
			return tablaProvincias;
		}
		
		public Gestión_UTN.bo.provinciabo FindProvinciaByNombre(string nombre)
		{
			Gestión_UTN.bo.provinciabo provincia = null;
			
			try 
			{
				Gestión_UTN.Entities.Provincia pro = (!nombre.Equals("")) ?
					createProvincia.FindProvinciaByNombre(nombre) : null;
				
				Gestión_UTN.Entities.Pais pai = (null != pro) ? createPais.FindPaisById(pro.Pai_id) : null;
				
				provincia = (null != pai) ? new Gestión_UTN.bo.provinciabo(pro.Prov_id,pro.Nombre, pai.Nombre) : null;
				
			} 
			catch (Exception) {
				
				provincia = null;
			}
			
			return provincia;
		}
		
		public Gestión_UTN.bo.provinciabo FindProvinciaById(int id)
		{
			Gestión_UTN.bo.provinciabo provincia = null;
			
			try 
			{
				Gestión_UTN.Entities.Provincia pro = (0 != id) ?
					createProvincia.FindProvinciaById(id) : null;
				
				Gestión_UTN.Entities.Pais pai = (null != pro) ? createPais.FindPaisById(pro.Pai_id) : null;
				
				provincia = (null != pai) ? new Gestión_UTN.bo.provinciabo(pro.Prov_id,pro.Nombre, pai.Nombre) : null;
				
			} 
			catch (Exception) {
				
				provincia = null;
			}
			
			return provincia;
		}
	}
}
